package com.yangcangclub.merchandise.service;

import com.yangcangclub.merchandise.bean.Product;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 商品模块service
 * Created by 肖明明 on 2017/2/20.
 */
public interface ProductService {

    /** 添加商品 */
    public int addProduct(String productName,String category,BigDecimal unitPrice,
                          BigDecimal showUnitPrice,BigDecimal shipping,
                          int inventory, String bannerUrl, String content,int status,
                          int userId,String userName,
                          int isFuxi,int isEveryday,int isConcentrate,int isLimit,
                          String startTime,String endTime,int showInventory,String subtitle,int warehouseType);

    /** 修改商品信息*/
    public int updateProductInfo(int pid,String productName,String category,BigDecimal unitPrice,BigDecimal showUnitPrice,
                                 BigDecimal shipping, String bannerUrl, String content,
                                 int isFuxi,int isEveryday,int isConcentrate,int isLimit,
                                 String startTime,String endTime,int showInventory,String subtitle,int warehouseType);

    /** 获取商城商品列表，有排序 */
    public List<Product> getShowProductList(String category,int isLimit,int orderSort,int pageSize);

    /** 根据ID列表获取商品概要信息列表*/
    public List<Product> getProductListByIds(List<Integer> ids);

    /** 根据ID获取商品详情*/
    public Product getProductById(int id);

    /** 后台获取商品信息分页列表*/
    public Map<String,Object> getPagenationProductList(int pageNum,int pageSize,Map map);

    /**修改商品状态*/
    public boolean updateProductionStatusById(int pid,int status);
    
    /**修改商品orderSort*/
    public boolean updateProductOrderSort(int pid,int orderSort,int upOrDown);

    /**
     * 修改商品库存
     * @param pid
     * @param step 正加负减
     * @return
     */
    public boolean  reduceInventoriesById(int pid,int step);

    /**
     * 修改限购商品限购时间
     * @param pid
     * @return
     */
    public boolean changeLimitProductTime(int pid,String startData,String endDate);

    /**限购商品模块状态 true显示 false隐藏
     * @return
     */
    public boolean limitProductModuleStatus();

    /**设置限时购模块是否显示
     * @param status
     * @return
     */
    public boolean setLimitProductModuleStatus(boolean status);
    
}
